package com.world.business.user.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.world.business.user.domain.UserEquipment;
import com.world.business.user.domain.query.*;
import com.world.business.user.domain.vo.UserEquipmentVO;

import java.util.List;

/**
 * <p>
 * 用户装备 服务类
 * </p>
 *
 * @author 邓驴
 * @since 2023-07-27
 */
public interface IUserEquipmentService extends IService<UserEquipment> {


    /**
     * 分页
     *
     * @param page    分页参数
     * @param request 请求参数
     * @return {@link IPage<UserEquipmentVO>}
     * @author WangYX
     * @date 2023/09/05 11:20
     */
    IPage<UserEquipmentVO> getPage(IPage<UserEquipment> page, UserEquipmentPageRequest request);

    /**
     * 新增
     *
     * @param request 新增请求参数
     * @return {@link Long}
     * @author WangYX
     * @date 2023/09/05 11:33
     */
    Long add(UserEquipmentAddRequest request);


    /**
     * 删除
     *
     * @param id 主键Id
     * @author WangYX
     * @date 2023/09/05 11:49
     */
    void delete(Long id);

    /**
     * 用户装备数量变更
     *
     * @param request 请求参数
     * @author WangYX
     * @date 2023/09/05 16:10
     */
    void numChangeById(UserEquipmentNumChangeByIdRequest request);

    /**
     * 用户装备数量变更
     *
     * @param request 请求参数
     * @author WangYX
     * @date 2023/09/05 16:20
     */
    void numChange(UserEquipmentNumChangeRequest request);


    /**
     * 装备损耗
     *
     * @param request 请求参数
     * @author WangYX
     * @date 2023/09/06 9:36
     */
    void equipmentLoss(UserEquipmentLossRequest request);

    /**
     * 用户装备详情
     *
     * @param userId 用户Id
     * @return {@link List<UserEquipmentVO>}
     * @author WangYX
     * @date 2023/09/06 10:26
     */
    List<UserEquipmentVO> get(Long userId);

}
